package com.hellobike.haxing.modules.order.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hellobike.haxing.common.vo.Result;
import com.hellobike.haxing.modules.order.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Map;

/**
 * @Description: 订单信息
 * @Author: haxing-boot
 * @Date:   2020-02-08
 * @Version: V1.0
 */
public interface IOrderService extends IService<Order> {
    /**
     * 分页查询
     * @param page
     * @param parameterMap
     * @return
     */
    IPage<Order> queryPage(Order order,Page<Order> page, Map<String, String[]> parameterMap);

    /**
     * 查询订单详情
     * @param id
     * @return
     */
    Order getOrderById(Long id);

    /**
     * 超时支付关闭订单
     */
    void updatePayTimeOutCloseOrder();

    /**
     * 取消订单到结单时间，未审核，默认都审核不通过
     */
    void updateCancelTimeOutCloseOrder();

    /**
     * 下单和取消订单同步采购单
     */
    void updateSyncPurchase(Long id,Integer type) throws RuntimeException;

    /**
     * 已完成订单计算团长佣金
     */
    void updateShopCommission();

    /**
     * 当前用户下单数
     * @param userId
     * @return
     */
    int countOrderUserId(Long userId);

    /**
     * 订单取消：审核通过
     * @param orderId 订单ID
     * @return
     */
    Result<?> approveCancelOrder(Long orderId) throws Exception;

    /**
     * 订单取消：审核不通过
     *
     * @param orderId
     * @return
     */
    boolean rejectCancelOrder(Long orderId);
}
